package com.admin.mapper;

import com.admin.entity.Station;
import com.admin.entity.Terminal;
import com.admin.excelList.TerminalList;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author marisheng
 * @since 2019-11-15
 */
public interface TerminalMapper extends BaseMapper<Terminal> {


    /**
     * 查询  一个是分页 一个是作为查询的条件
     * @param p
     * @param map
     * @return
     */
    public IPage selectTerminal(Page p,@Param("m") Map map);

    @Update("update terminal set terminal_lock=#{terminalLock} where terminal_id=#{terminalId}")
    public int updateLockById(@Param("terminalLock")String terminalLock,@Param("terminalId")Integer terminalId);

    /**
     * 终端列表查询所有或模糊查 房间号 /mac/ ip地址
     * @param p
     * @param m
     * @return
     */
    public IPage queryIpMacFjAll(Page p, @Param("m") Map m);

    /**
     * 导出excel
     * @param p
     * @param m
     * @return
     */
    public IPage excelTerminal(Page p, @Param("m") Map m);
    /**
     * 终端统计
     * @param p
     * @param map
     * @return
     */
    public IPage querysystemStatistics(Page p, @Param("m") Map map);

    /**
     * 密钥列表
     * @param p
     * @param map
     * @return
     */
    public IPage queryTerminalKey(Page p, @Param("m") Map map);

    /**
     * 查询 终端 出租 时间 记录
     * @param p
     * @param map
     * @return
     */
    public IPage queryStatrtAndEndTime(Page p, @Param("m") Map map);

    /**
     * 查询终端出租的历史记录
     * @param p
     * @param map
     * @return
     */
    public IPage queryStartAndEndTime(Page p, @Param("m") Map map);

    /**
     * 分组列表 操作查看每个分组的所有终端
     * @param p 分页参数
     * @param map
     * @return
     */
    public IPage groupQueryTerminal(Page p,@Param("m")Map map);

    /**
     * 站点管理 终端列表 解绑
     * @param terminalId
     * @return
     */
    @Update("UPDATE terminal set terminal_station=NULL , terminal_room=NULL , terminal_group=NULL where terminal_id=#{terminalId}")
    public int updateUntyingTerminal(@Param("terminalId") Integer terminalId);

    /**
     * 查询当前当前用户以及下级的下级的已绑定终端的在线时长和状态
     * @param list
     * @return 在线时长和状态
     */
    public List<Terminal> tongJizhongduan(@Param("list") List<Station> list);

    /**
     * 审核终端解绑
     * @param
     * @param
     * @param tiaojian
     * @return
     */
    public IPage queryJieChu(Page p,@Param("tiaojian") String tiaojian);

    /**
     * 修改终端状态时 解锁需要审核 审核字段修改为未审核
     * @param id 终端id
     * @return
     */
    @Update("update terminal set terminal_shenhe='未审核' where terminal_id=#{id}")
    public void updateTShenhe(Integer id);

    //导出Excel表格
    public List<TerminalList> excelTerminalList();

}
